#ifndef TEXTURAS_H_
#define TEXTURAS_H_

#include <iostream>
#include "string.h"
//#include "TipoBonus.h"
#include "Lista.h"
//#include "PuntosDeGrillaConMismaTexturaException.h"
#include "TipoYaExisteException.h"
#include "Textura.h"
using namespace std;

class Texturas : public Lista<Textura*> , public ObjetoModelo {

public:

	Texturas(){
		this->setNombreClase("Texturas");
	}

	/*
	Si la Textura de nombre n esta dentro de la lista devuelve true,
	en caso contrario devuelve false
	*/

	bool yaEstaTipo(string n){
		IteradorLista<Textura*> iterador = this->iterador();
		bool esta = false;
		while ((iterador.tieneSiguiente())  &&  (!esta)){
			Textura* unaTextura = iterador.siguiente();
			esta = (unaTextura->getNombre()==n);
		}
		return esta;
	}
	
	/*bool yaEstaTextura(char t){
		IteradorLista<TipoBonus*> iterador = this->iterador();
		bool esta = false;
		while ((iterador.tieneSiguiente())  &&  (!esta)){
			TipoBonus* unTipoBonus = iterador.siguiente();
			esta = (unTipoBonus->getTextura()==t);
		}
		return esta;
	}*/

	void agregarObjeto(ObjetoModelo* om) throw(...) {
		if(om!=NULL){
			if(om->getNombreClase()=="Textura"){
				//if(yaEstaTextura(((TipoBonus*)om)->getTextura())){
				//	throw new PuntosDeGrillaConMismaTexturaException();
				//}
				if(yaEstaTipo(((Textura*)om)->getNombre())){
					throw new TipoYaExisteException();
				}
			this->agregar((Textura*)om);
			}
		}
	}
};
#endif